home *** CD-ROM | disk | FTP | other *** search
- package netscape.ldap;
-
- import java.net.MalformedURLException;
- import java.util.Enumeration;
- import java.util.NoSuchElementException;
- import java.util.StringTokenizer;
- import java.util.Vector;
-
- public class LDAPUrl {
- public static String defaultFilter = "(objectClass=*)";
- private String hostName;
- private int portNumber;
- // $FF: renamed from: DN java.lang.String
- private String field_0;
- private Vector attributes;
- private int scope;
- private String filter;
- private String URL;
-
- public LDAPUrl(String var1) throws MalformedURLException {
- StringTokenizer var2 = new StringTokenizer(var1, ":/?", true);
- String var4 = null;
- this.attributes = null;
- this.scope = 0;
- this.filter = defaultFilter;
- this.URL = var1;
-
- try {
- String var3 = var2.nextToken();
- if (!var3.equalsIgnoreCase("LDAP")) {
- throw new MalformedURLException();
- }
-
- var2.nextToken();
- var2.nextToken();
- var2.nextToken();
- var3 = var2.nextToken();
- if (var3.equals("/")) {
- this.hostName = null;
- this.portNumber = 389;
- } else {
- this.hostName = var3;
- if (var2.countTokens() == 0) {
- this.portNumber = 389;
- return;
- }
-
- var3 = var2.nextToken();
- if (var3.equals(":")) {
- this.portNumber = Integer.parseInt(var2.nextToken());
- if (var2.countTokens() == 0) {
- return;
- }
-
- var2.nextToken();
- } else {
- this.portNumber = 389;
- }
- }
-
- if (var2.countTokens() == 0) {
- return;
- }
-
- this.field_0 = decode(var2.nextToken());
- if (this.field_0.equals("?")) {
- this.field_0 = "";
- } else if (this.field_0.equals("/")) {
- throw new MalformedURLException();
- }
-
- if (var2.hasMoreTokens()) {
- Object var5 = null;
- String var9 = this.readNextConstruct(var2);
- if (var9 != null && this.isAttribute(var9)) {
- if (var9.equals("?")) {
- var4 = null;
- var9 = var2.nextToken();
- } else {
- var4 = decode(var9);
- var9 = this.readNextConstruct(var2);
- }
- }
-
- if (var9 != null && (this.scope = this.getScope(var9)) != -1) {
- var9 = this.readNextConstruct(var2);
- } else if (var9 != null && var9.equals("?")) {
- this.scope = 0;
- var9 = var2.nextToken();
- } else {
- this.scope = 0;
- }
-
- if (var9 != null && var9.startsWith("(") && true) {
- this.filter = decode(var9);
- this.readNextConstruct(var2);
- }
- }
- } catch (NumberFormatException var6) {
- throw new MalformedURLException();
- }
-
- if (var4 != null) {
- StringTokenizer var10 = new StringTokenizer(var4, ", ");
- this.attributes = new Vector();
-
- while(var10.hasMoreTokens()) {
- this.attributes.addElement(var10.nextToken());
- }
- }
-
- }
-
- public LDAPUrl(String var1, int var2, String var3) {
- if (var1 != null) {
- if (var2 != 389) {
- this.URL = "LDAP://" + var1 + ":" + var2 + "/" + encode(var3);
- } else {
- this.URL = "LDAP://" + var1 + "/" + encode(var3);
- }
- } else {
- this.URL = "LDAP:///" + encode(var3);
- }
-
- this.hostName = var1;
- this.field_0 = var3;
- this.portNumber = var2;
- this.filter = defaultFilter;
- this.attributes = null;
- this.scope = 0;
- }
-
- public LDAPUrl(String var1, int var2, String var3, String[] var4, int var5, String var6) {
- if (var4 == null) {
- this.initialize(var1, var2, var3, (Enumeration)null, var5, var6);
- } else {
- Vector var7 = new Vector();
-
- for(int var8 = 0; var8 < var4.length; ++var8) {
- var7.addElement(var4[var8]);
- }
-
- this.initialize(var1, var2, var3, var7.elements(), var5, var6);
- }
- }
-
- public LDAPUrl(String var1, int var2, String var3, Enumeration var4, int var5, String var6) {
- this.initialize(var1, var2, var3, var4, var5, var6);
- }
-
- private void initialize(String var1, int var2, String var3, Enumeration var4, int var5, String var6) {
- this.hostName = var1;
- this.field_0 = var3;
- this.portNumber = var2;
- this.filter = var6 != null ? var6 : defaultFilter;
- this.scope = var5;
- if (var4 != null) {
- this.attributes = new Vector();
-
- while(var4.hasMoreElements()) {
- this.attributes.addElement(var4.nextElement());
- }
- } else {
- this.attributes = null;
- }
-
- StringBuffer var7 = new StringBuffer("LDAP://");
- if (var1 != null) {
- var7.append(var1);
- if (var2 != 389) {
- var7.append(':');
- var7.append(String.valueOf(var2));
- }
- }
-
- var7.append('/');
- var7.append(encode(var3));
- if (var4 != null) {
- var7.append('?');
- Enumeration var8 = this.attributes.elements();
-
- for(boolean var9 = true; var8.hasMoreElements(); var7.append((String)var8.nextElement())) {
- if (!var9) {
- var7.append(',');
- } else {
- var9 = false;
- }
- }
- }
-
- if (var6 != null) {
- if (var4 == null) {
- var7.append('?');
- }
-
- var7.append('?');
- switch (var5) {
- case 0:
- default:
- var7.append("base");
- break;
- case 1:
- var7.append("one");
- break;
- case 2:
- var7.append("sub");
- }
-
- var7.append('?');
- var7.append(var6);
- }
-
- this.URL = var7.toString();
- }
-
- public String getHost() {
- return this.hostName;
- }
-
- public int getPort() {
- return this.portNumber;
- }
-
- public String getDN() {
- return this.field_0;
- }
-
- public Enumeration getAttributes() {
- return this.attributes == null ? null : this.attributes.elements();
- }
-
- public String[] getAttributeArray() {
- if (this.attributes == null) {
- return null;
- } else {
- String[] var1 = new String[this.attributes.size()];
- Enumeration var2 = this.getAttributes();
-
- for(int var3 = 0; var2.hasMoreElements(); var1[var3++] = (String)var2.nextElement()) {
- }
-
- return var1;
- }
- }
-
- public int getScope() {
- return this.scope;
- }
-
- private int getScope(String var1) {
- byte var2 = -1;
- if (var1.equalsIgnoreCase("base")) {
- var2 = 0;
- } else if (var1.equalsIgnoreCase("one")) {
- var2 = 1;
- } else if (var1.equalsIgnoreCase("sub")) {
- var2 = 2;
- }
-
- return var2;
- }
-
- public String getFilter() {
- return this.filter;
- }
-
- public String getUrl() {
- return this.URL;
- }
-
- private boolean isFilter(String var1) {
- return var1.startsWith("(");
- }
-
- private boolean isAttribute(String var1) {
- return !var1.startsWith("(") && !var1.equalsIgnoreCase("base") && !var1.equalsIgnoreCase("one") && !var1.equalsIgnoreCase("sub");
- }
-
- private String readNextConstruct(StringTokenizer var1) throws MalformedURLException {
- try {
- if (var1.hasMoreTokens()) {
- var1.nextToken();
- return var1.nextToken();
- } else {
- return null;
- }
- } catch (NoSuchElementException var2) {
- throw new MalformedURLException();
- }
- }
-
- private static int hexValue(char var0) throws MalformedURLException {
- if (var0 >= '0' && var0 <= '9') {
- return var0 - 48;
- } else if (var0 >= 'A' && var0 <= 'F') {
- return var0 - 65 + 10;
- } else if (var0 >= 'a' && var0 <= 'f') {
- return var0 - 97 + 10;
- } else {
- throw new MalformedURLException();
- }
- }
-
- private static char hexChar(int var0) {
- if (var0 >= 0 && var0 <= 15) {
- return var0 < 10 ? (char)(var0 + 48) : (char)(var0 - 10 + 97);
- } else {
- return 'x';
- }
- }
-
- public static String decode(String var0) throws MalformedURLException {
- StringBuffer var1 = new StringBuffer(var0);
- int var2 = 0;
- int var3 = 0;
-
- try {
- while(var2 < var1.length()) {
- if (var1.charAt(var2) != '%') {
- if (var2 != var3) {
- var1.setCharAt(var3, var1.charAt(var2));
- }
-
- ++var2;
- ++var3;
- } else {
- var1.setCharAt(var3, (char)(hexValue(var1.charAt(var2 + 1)) << 4 | hexValue(var1.charAt(var2 + 2))));
- ++var3;
- var2 += 3;
- }
- }
- } catch (StringIndexOutOfBoundsException var4) {
- throw new MalformedURLException();
- }
-
- var1.setLength(var3);
- return var1.toString();
- }
-
- public static String encode(String var0) {
- StringBuffer var1 = new StringBuffer(var0.length() + 10);
-
- for(int var2 = 0; var2 < var0.length(); ++var2) {
- char var3 = var0.charAt(var2);
- if ((var3 < 'a' || var3 > 'z') && (var3 < 'A' || var3 > 'Z') && (var3 < '0' || var3 > '9') && "$-_.+!*'(),".indexOf(var3) <= 0) {
- var1.append("%");
- int var4 = (var3 & 240) >> 4;
- var1.append(var4 >= 0 && var4 <= 15 ? (var4 < 10 ? (char)(var4 + 48) : (char)(var4 - 10 + 97)) : 'x');
- var4 = var3 & 15;
- var1.append(var4 >= 0 && var4 <= 15 ? (var4 < 10 ? (char)(var4 + 48) : (char)(var4 - 10 + 97)) : 'x');
- } else {
- var1.append(var3);
- }
- }
-
- return var1.toString();
- }
- }
-